查看原文
其他

深度|数据智能在二手车业务场景中的探索与沉淀——关于用户流量的预测与识别

李晓东 58技术 2022-03-15

导语

本文主要介绍了数据智能二手车业务场景中的探索与沉淀——关于用户流量的预测和识别,内容翔实,可以启发大家结合当下自己的业务场景进行深挖和赋能,共同交流思路与方案,希望对技术同学尤其是业务侧的技术同学有所帮助。



背景

场景AI的赋能需要对业务有深入的理解,智能方向的考虑与分析要从业务本身的特性、特质出发,通过场景全链路的分析并结合用户业务数据积累,在每个关键节点进行赋能与提效。58集团业务部门的指标是围绕收入进行的,在产品的全连接后,所有对于有助于连接转化效率的提升的内容和考虑尤为重要,这就要求我们在实际业务场景中,结合用户行为的每个关键的行为节点进行深入的分析和思考,通过用户全链路的分析并结合平台用户业务数据的不断沉淀,在不同的行为环节进行辅助提效 - feed(信息流)场景中用户的关键行为主要分拆为4个阶段:1.流量的接入 2.检索 3.点击 4.电话本文的技术内容也是围绕这4个部分的技术点进行展开说明。

今天文章整理的是关于第一个行为环节的内容 - Part1关于流量的预测与识别 -

 


内容部分-用户全链路的分析-流量的预估

我们通过用户全链路的分析,将用户的关键行为拆分了4个主要阶段:1.流量的接入 2.检索3.点击4.电话如图1中所示是我们对每个环节技术内容做的摘要整理,下文中会针对这第一个环节 - “流量的预估”进行展开说明:(图 1)
1.流量的接入环节 - 流量预估在流量的接入环节,我们希望具备两种能力:一种是对用户身份的预估与分层,一种能力是我们需要对已有历史行为的用户进行准确的兴趣描述。
1.1 关于用户分层的具体做法:

1.我们先期定义了5种用户的身份:个人、商家/中介、类平台、爬虫和异常流量;

2.对用户的行为数据进行统计和分析,抛离异常流量及爬虫流量,并结合聚类观察特征数据的聚合情况;

3.同时也会通过模型对用户的身份进行概率性预估,输出身份概率。

用户身份的预估是后续多个业务场景策略干预的基础:比如我们将身份预估的结果同电话系统结合,对于确定识别的个人直接绑定AxB的策略,对于识别的商家/中介或类平台,我们可以计算浮动因子干预号码有效绑定时间,这些均有助于提高号码资源的使用效率,降低串号率。
1.2 流量的接入- 关于用户的兴趣描述:这边之所以没有使用“用户画像”这个词,是因为我们理解在单品类(info - 车)的业务场景中,画像的概念是发散的,推荐的商品是多样的、支持多场景的,而“兴趣描述”和单品类业务的描述更为贴切,比如我们会将用户的行为抽象成info-车 的标签、或标签的组合,结合特征工程分析业务特征的权重、进行特征的挖掘和组合,同时也会分析用户在某些特征上的兴趣度,并作为系数干预召回模型。正如所有的推荐场景都是与业务强相关的,兴趣的准确描述就需要对业务特性有深入的理解和分析,这是提供准确召回能力的基础。图2完整描述了我们基于协同过滤对用户兴趣进行描述- 作为信息召回的基础,并结合后续的特征工程、排序、策略&规则、ABtest在提升线上feed场景转化效率中的流程和思路(关于特征工程、排序等在后续系列的文章中进行整理):

(图2)


说明:目前召回的模型是 通过用户行为的分析基于itemCF计算标签组合的相似度矩阵,通过用户行为抽象的TopN进行模型的匹配,获得检索条件 。当然getInfo这部分还需要召回策略的融合,这个在后面会详细讲到,总体来说“用户 - 兴趣的描述”是后续信息召回的基础。



具体流程描述

为什么要做流量的识别 - 关于应用场景的考虑?

(图3)

1.用户的身份预估的结果,可以切入业务场景的各个环节,辅助干预策略。也可以作为其他智能系统的前置条件或基础;2.兴趣描述是不同场景信息召回的基础。


2.用户的身份预估- 流程图4描述了用户身份预估的整体流程,该流程分为“统计分析 & 智能预估”两个阶段:(图4)第一阶段:需要对用户的历史行为进行收集、清洗和分析,通过观测数据的分布情况,辅助我们做相关规则的定义(特征),统计分析的结果可以作为第二阶段聚类特征选取的依据。二手车业务侧基于IDMapping创建业务数据的基础数据仓储,做从ID到cookie、电话、设备信息的唯一映射关系,并不断积累和完善这些数据,用于留存和识别固定的目标人。数据的选取是基于用户listing的历史行为,如cookie - “列表页的请求量”、“点击总量”、“电话拨打量”、“某些操作使用的IP列表长度”等,通过统计的视角观测数据的分布情况,通过先验知识进行规则切分,对流量进行初步的判别。在爬虫流量的识别的部分 - 通过对数据的绝对值统计,将无拨打行为、请求量巨大等异常数据分布的用户直接判定处理。在行为用户精细化分析部分 - 通过对用户拨打行为的频率、均值、统计量等维度特征进行数据分布分析,尝试对关键数据指标进行处理。以上就是第一阶段要做的事情。
第二阶段:数据的统计与分布的观测有助于我们下阶段特征的粗选,通过对样本聚类的结果观测数据分组的效果,聚类的效果清晰、良好可被直接在样本数据的分类上进行使用,也可以将聚类的结果作为一组新的特征参与下个阶段的监督学习。目前使用了K-Meams、GMM、DBSCAN 3种聚类的算法进行实验和对比,PCA降维后观测 K-Meams 聚类效果更好一些(起初尝试2-10个分类,肘部法则确定分5类的时候整体的距离紧凑度最好,这正好对应我们先前定义的5种身份类型),在监督学习部分使用 LR、XGBOOST+FM 进行模型的训练,样本是清洗后的历史行为(关键行为特征的count),在WPAI上模型的auc在0.67左右。
总结该阶段整体的操作流程:1 行为定义 → 2 数据抽取 → 3 统计 → 4 区间调整 → 5 观测结果&分析。 2.1 数据的统计与分析样本的选取需要从用户的行为轨迹进行分析,用户操作路径的关键行为统计和分析 - 可用于指导下阶段特征的选取及区间阈值的定义。用户的行为轨迹:1 曝光 → 2 检索 → 3 点击 → 4 浏览(停留时间) → 5 电话我们抽取的用于分析的目标数据 :cookie- 86.7w 对应 ip - 67.6w,将这些数据对应用户行为轨迹做漏斗的分析,通过线箱分析,可以帮助我们确定数据离群点,选取有效数据并划定特征的取值范围,该过程分析思路如图5:(图5)分析思路:如数据统计情况,有检索无点击 -13.3w,占比15%,离群点16,分析将检索 > 50的定义为爬虫,该case下可用于下阶段特征提取的区间定义到 0-20、20-50、50+。以此类推分析到点击、到电话的数据,确定离群点划定不同特征取值范围。关于样本的处理,为了避免空值、异常值或某些特征的原始值过大对聚类效果造成干扰,需要剔除空值、异常值数据、并针对特别特征做归一化处理。操作流程(如图6):(图6)如图7,结合第一阶段数据的分析与特征的粗选的结果进行特征的选择,将清洗后的样本数据进行聚类的分析,使用PCA/TSNE进行降维,通过聚类后效果的观测 - 验证特征对身份划分的有效性,并多次迭代这个过程,观测数据的聚合效果。

(图7)

从另一个层面上讲,无监督学习可以启发思路,衔接下个阶段的监督学习。 2.2 用户身份预估(个人/商家) - 与电话场景的结合

关于用户身份的预估同业务场景结合部分,我们选取了电话场景,电话场景的赋能点主要是提高号码资源的使用效率、降低串号率:

1.通过身份的预估,帮助干预号码的回收机制;2.识别的身份结合IDMapping用户数据的留存,可以辅助进行智能AxB的绑定(AxB是一种通讯绑定机制,对号码资源的使用周期理论上可以无限延长);3.cvr拨打的预估模型可以间接的支持转化的提升(通过模型对拨打概率进行预估)。

前面提到针对有历史行为的用户,我们做同IDMapping映射的用户数据仓储,并持续积累这些数据,业务实现接入的大部分工作都通过离线计算完成,离线处理用户的历史数据做:特征提取 → 身份预估模型 → 用户分类结果(概率)→ redis → 场景的使用, 整体的流程如图8:

(图8)
商家用户样本的标记过程:

1.手机号码是座机的用户,标定为商家;

2.有过回拨的用户标注为商家;

3.结合业务的数据留存,如来电通投诉电话被客服明确标记的商家主叫号码;

4.分析拨打行为数据,将30天内拨打频率较高的用户进行剥离,进行商家判定(历史信息查询、电话录音等),并采用无偏估计的方式进行信息验证。

个人用户样本的标注过程:

1.选取检索、点击、获取号码、拨打相对合理的数据,先验定义为个人;

2.通过听语音人肉的方式确定这部分样本的准确性,并标注为个人,作为种子数据;

3.结合种子数据,计算样本“皮尔逊系数” 𝑟,将𝑟 > 0.9的样本标记为个人;

4.在样本不足的情况下采用随机复制的的方式对样本数量进行扩充。

 2.3 cvr - 拨打的预估模型cvr模型的预估运用在号码的回收环节,将拨打预估转化最低的作为优先征用的资源进行释放操作,维护资源列队,以达到提高号码资源使用效率的目的。目前cvr预估不使用强策略干预线上,仅取了部分流量进行实验评估,迭代模型的训练。cvr预估的流程如图9:(图9)cvr预估部分样本的去燥规则:1 去掉了异常、无拨打、空值的数据 2 结合线箱分析样本特征的合理区间,去掉异常区间数据 3 过滤主叫-座机、无前置行为(无合理轨迹)数据。模型测试的结果 - AUC:LR - 0.6653、XGBOOST- 0.685、FM - 0.6767。线上的测试效果如图10:(图10)模型&策略的干预在电话场景中也得到了很好的效果,我们抽取了部分流量进行实验,指标如上图,号码资源的平均有效时间延长了4%,间接指向串号率的指标呈现明显下降的趋势。 3.流量 - 用户兴趣的描述3.1 背景&主要内容:

1.在单一品类的业务场景中不需要画像的概念,只需要描述用户的兴趣,用户兴趣合理准确的描述是信息-infos召回的基础;

2.受限于平台用户留存度低和计算成本的考虑,所以我们选择基于信息(车源)的维度挖掘商品之间的相似度,并结合用户行为的topN进行召回(itemCF作为召回的基础);

3.基于信息的相似度矩阵的计算需要确认特征&特征组合作为查询条件,这边需要考虑特征的选取;

4.关于相似度计算 - 算法的选择需要考虑样本的特点和场景的意图;

5.二手车基础的数据仓储;

用户兴趣描述及召回的整体流程- 如图11:(图11)说明:

1.数据仓储用来存储和分析用户的点击行为,对数据进行清洗、采样,作为0 1的基础样本数据;

2.结合特征工程分析的结果选定特征并进行特征组合 - 即标签,标签可对应到信息的检索条件,后面计算信息的相似度矩阵,其实是标签组合的相似度矩阵,这边选定的标签是“车系” + “价格区间”;

3.对比相似度计算公式,结合样本 0 1 的特点,这边选定使用 Jaccard 进行标签-相似度矩阵的计算;

4.离线计算的相似度矩阵作为基础的topN条件匹配库 - redis;

5.抽取数据仓库中用户的历史做标签的映射,userID -(车系x + 价格y),匹配相似度矩阵,选取topN个标签组合作为这个用户下次召回的N个检索条件;

6.用户id - topN 固化redis,用于用户的兴趣召回,用户的当前行为也会实时更新topN条件,影响下一次getList的查询结果;

在第二版的用户用户兴趣描述中,我们开始扩展标签的组合、扩展矩阵的能力,做信息(内容)标签挖掘的同时,围绕特征工程分析用户到业务不同属性的专注度,作为系数干预召回模型。 3.2关于二手车数据仓储:随着业务数据分析内容的增多,我们需要统一数据口径,提供通用、准确的数据分析能力,从16年开始我们着手构建二手车业务的基础数据仓储,仓储整体分了两个部分,参考图12:(图12) 一部分是离线数据的处理和分层,一部分是实时数据的处理与分析平台,这边简单提一下数据仓储的设计,仓储的设计和业内大部分设计基本一致,针对数据处理的不同阶段分了4层:DS、DW、DM、DA,DS层是Flume收集的基础日志内容,并同日志的监控结合,DW层是经过清洗后存储的数据内容,是可供初步分析的数据,DM这一层会参考业务的特征对数据进行轻度的聚合,用于支撑部分业务场景的数据分析工作,DA层是场景主题的成品数据,用于直接分析和报表的产出。该系统运行了2年的时间,从去年开始我们将所有业务侧的数据迁移至中台58dp,中台数据平台提供了高效稳定的数据分析环境,这也为我们后续数据智能方面的工作提供了莫大的支持。 3.3 关于itemCF的使用& 相似度矩阵的计算:用于计算的样本选取用户到信息的点击行为,样本描述为 “user1 - info1、info2、infox”,结合特征标签将样本映射为“user1 - 标签组合1、标签组合2、标签组合3...” , Jaccard 相似度算法不会考虑向量中潜在数值的大小,而是简单的处理为0和1,这正符合我们样本的是否点击的0 1特征,Jaccard 距离用于描述个两个集合中不同元素占所有元素的比例来衡量两个集合的区分度,所以本质上是统计和概率的问题,通过 Jaccard 相似度计算生成标签组合的相似度矩阵的计算过程,如图13:

(图13)

前面提到Jaccard针对样本0 1的特征具有非常好的适用性,这边也单独拿出几种常用的距离算法做一个简单说明:

1.Jaccard距离用于描述两个集合中不同元素占所有元素的比例来衡量两个集合的区分度,Jaccard系数等于样本集交集与样本集合集的比值;

2.欧氏度量衡量数值上差异的绝对值,距离度量会受指标不同单位刻度的影响,所以一般需要先进行标准化,比如对数据做归一化处理,同时距离越大,个体间差异越大;

3.空间向量余弦夹角的相似度度量不会受指标刻度的影响,余弦值落于区间[-1,1],值越大,差异越小;

4.余弦相似度衡量的是维度间相对层面的差异,一种长度与方向的度量所造成的不同,余弦相似度只在[0,1]之间

 3.4 关于实时 + 离线的召回方式:目前的召回方式支持实时和离线两种信息的召回方式,通过用于的历史行为生成相似度矩阵的模型,固化存储用户的id和兴趣topN(离线场景),redis保存用户兴趣,支持get标签-通过ses进行检索。具体的流程如下图14:(图14)对于实时的信息召回,当前行为getlist映射成标签,通过5分钟的窗口期进行统一、批量的比对用户获取topN,同时实时的协同过滤也提供了毫秒级的召回方案,保障召回行为的高效。线上应用的场景中,针对召回、排序两个阶段核心部分,我们分别加入了降级的预案,保障线上调用流畅与稳定。 3.5 关于召回策略的融合:在实际的应用场景中,召回层往往需要多召回策略的协同和融合,目前线上召回层我们正在使用的召回策略:1 模型召回(实时+离线)、2 热门召回-按城市、3 画像召回、4 检索召回补余策略:

1.以协同过滤的模型作为基础的召回策略,提供数据基础;

2.针对冷启动的问题会结合热门的召回 + ses的随机召回方案,这边会按城市、天的维度离线计算热门信息,热门的策略也被作为补余策略的一种;

3.同时召回的信息会结合时间的衰减因子(通过点击-时间计算)进行升、降权的处理。

 3.6 关于兴趣的描述及线上应用效果的反馈:基础的协同过滤结合多策略融合的召回在线上场景进行了多组的实验,并持续优化和迭代这个过程,截止到到今年4月份,我们选取了10日的数据进行有、无模型干预的效果对照(场景 - 二手车大类页“猜你喜欢20%流量”),模型干预对于ctr1的提升为 4.92%,对ctr2的提升为5.99%,效果比较稳定,这个效果还是比较好的,如图15:(图15)
「关于召回率&准确率的分析」- 可以帮助我们确定合理的标签范围,及top-N的长度,经过多组线上实验的效果对照,我们最终将N的长度确定为10,这几乎是召回率和准确率交叉的点,基本的分析结果如下图16:(图16)

1.召回率的定义 = size(协同过滤TopN推荐item集合∩用户发生过行为的item集合)/ size(用户发生过行为的item集合) ;

2.准确率的定义 = size(协同过滤TopN推荐item集合∩用户发生过行为的item集合)/ size(协同过滤TopN推荐item集合);

 3.7 关于“兴趣描述 ”下个阶段思考尝试的方向:关于“流量 - 兴趣描述”下个阶段(2.0)主要从有下面4方面的思考,详细参考图17:

1.以协同过滤的召回为基础 - 扩展特征的组合(计算二次特征的组合)扩展相似度矩阵的适应能力;

2.塑造人的基于业务品类的标签,描述相关属性的兴趣度,作为系数干预模型;

3.挖掘信息的标签,提取信息的特征,做关联,也包含信息的质量、完整度、吸引力;

4.商家的信用等级也会作为信息优选的参考条件;

(图17)
关于相似度矩阵能力的扩展 - 矩阵的生成、使用,参考目标人的业务属性个性度,从属性个性度的角度出发考虑特征标签的组合,特征的兴趣度作为干预系数,并考虑采用多矩阵协同的召回方案,扩展特征的选取和特征的组合方式,加入更多特征组合的实验,并对矩阵的做持续的评测。关于特征工程部分 - 需要加深对业务理解和宏观特征的分析,做特征的组合,持续特征权重的分析。考虑从info - content中挖掘品类属性的关系 - 从信息特征进行聚合,如车辆级别、驱动类型、保值能力、省油、白菜价、等,按特征、特征组合汇总的信息支持兴趣专注度的召回,同时可丰富特征工程的参考维度。

总结

整体来看,用户流量的接入环节是平台链路的第一个环节,兴趣的准确描述是后续信息召回的基础,用户身份的预估可以为后续不同业务场景的决策提供干预和参考。至此关于《数据智能在二手车业务场景中的探索与沉淀 - Part1 关于用户流量的预测与识别》这部分内容整理结束,在后面分享中会继续针对Part2 - 用户检索&标签挖掘部分的内容进行整理和分享。另外也感谢我的领导在整个过程中所给予的宝贵思路与建议!目前技术团队在持续引进优秀的人才,感兴趣的同学欢迎简历至:lixd@58.com,也可以通过这种方式同我建立交流。
作者简介李晓东 / 58集团 高级技术经理2015年1月加入58集团二手车技术团队,负责二手车商业、商家服务、信息、数据智能、移动端技术等相关服务平台的开发及管理工作。
相关推荐:
机器学习在58二手车估价系统实践
面向并行研发的58同城Android端IM模块发展演变
魔镜—58可视化数据智能平台架构与实践



福利环节



好的内容需要分享扩散,比如今天这篇👆👆👆


为了鼓励优质内容传播,【58技术】公众号之后会不定时设置福利活动奖励“优质内容推手

转发本篇内容到朋友圈并发表任意推荐阅读评论,然后将转发截图上传至微信公众号后台,第8、58、88位上传截图的同学将会无条件获得50元京东购物卡奖励!


做朋友圈的KOR(Key Opinion Reader),传播优质内容,手有余香




END



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存